# -*- coding: utf-8 -*-
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import random
%matplotlib inline
# Message to embedd
#message = 'Les compétences de l’équipe SIGMA reposent sur des fondements solides en statistiques et en géométrie, ses membres s’intéressent aux objets mathématiques extraits de mesures physiques comme par exemple les images, la lumière polarisée, les sons, les vidéos ou encore les capteurs chimiques ou de turbulence. Ces signaux et leurs propriétés sont traités en utilisant le formalisme Bayésien, la théorie des fonctions de croyance, la géométrie de l’information ou la théorie de l’information. Avec pour dénominateur commun le traitement et la modélisation statistique des signaux, nos activités de recherche s’inscrivent dans les communautés relevant de l’inférence Bayésienne, de la théorie de la décision évidentielle, de l’imagerie polarimétrique ou de la sécurité de l’information. L’équipe SIGMA s’appuie également sur des relations fortes avec le master Décision et Analyse de Données de l’École Centrale Lille et l’option de traitement statistique du signal de Telecom-Lille.Illustrations de nos recherches : Inférence Bayésienne et méthodes de Monte-Carlo : suivi d’objets vidéo, modélisation inverse (remontée aux données sources), Fusion de données : prise de décision à partir d’un réseau de capteurs Sécurité de l’information : détection d’intrusion et de signaux faibles ; authentification automatique de documents imprimés, Imagerie polarimétrique : détection d’artefacts sur des matériaux.'
message = 'CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.'
# Key
key = 'azerty'
print(message)
CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.
# Cover file
image_path = './red_fish.png'
# Stego file
stego_path = './stego.png'
# Open and show the figure
pil_image = Image.open(image_path)
im_array = np.asarray(pil_image)
im_stego = np.copy(im_array)
plt.figure(1,figsize=(10,10))
plt.imshow(im_array)
<matplotlib.image.AxesImage at 0x15d4479a910>
# Convert the message to bits
#message_unicode = unicode(message, "utf-8")
message_unicode = str(message)
#print(message_unicode)
#bits = '{:b}'.format(int(message_unicode.encode('utf-8').encode('hex'), 16))
#bits = ''.join(['{:b}'.format(ord(x)) for x in message_unicode.encode('utf-8')])
bits = bin(int.from_bytes(message.encode(), 'big'))
bits = bits[2:]
print('message inséré:')
print(bits[:100])
message inséré: 1000011010100100100100101010011011101000100000101001100001000000010100001000011011001010110111001110
bit_string = bin(int.from_bytes(message.encode(), 'big'))
print(bit_string[:10])
n = int('0b'+bit_string[2:], 2)
print(bit_string[:])
n.to_bytes((n.bit_length() + 7) // 8, 'big').decode()
0b10000110 0b10000110101001001001001010100110111010001000001010011000010000000101000010000110110010101101110011101000111001001100101001000000110010001100101001000000101001001100101011000110110100001100101011100100110001101101000011001010010000001100101011011100010000001001001011011100110011001101111011100100110110101100001011101000110100101110001011101010110010100101100001000000101001101101001011001110110111001100001011011000010000001100101011101000010000001000001011101010111010001101111011011010110000101110100011010010111000101110101011001010010000001100100011001010010000001001100011010010110110001101100011001010010100100100000011001010111001101110100001000000111010101101110011001010010000001110101011011100110100101110100110000111010100100100000011011010110100101111000011101000110010100100000011001000110010100100000011100100110010101100011011010000110010101110010011000110110100001100101001000000010100001010101010011010101001000100000001110010011000100111000001110010010100100100000011100101100001110101001011100110111010101101100011101000110000101101110011101000010000001100100011001010010000001101100011000010010000001100110011101010111001101101001011011110110111000100000011001000111010100100000010011000100000101000111010010010101001100100000001010000100110001100001011000100110111101110010011000010111010001101111011010010111001001100101001000000110010011100010100000001001100101000001011101010111010001101111011011010110000101110100011010010111000101110101011001010010110000100000010001111100001110101001011011100110100101100101001000000100100101101110011001100110111101110010011011010110000101110100011010010111000101110101011001010010000001100101011101000010000001010011011010010110011101101110011000010110110000100000001011010010000001010101010011010101001000100000001110000011001000110001001110010010100100100000011001010111010000100000011001000111010100100000010011000100100101000110010011000010000000101000010011000110000101100010011011110111001001100001011101000110111101101001011100100110010100100000011001001110001010000000100110010100100101101110011001100110111101110010011011010110000101110100011010010111000101110101011001010010000001000110011011110110111001100100011000010110110101100101011011100111010001100001011011000110010100100000011001000110010100100000010011000110100101101100011011000110010100100000001011010010000001010101010011010101001000100000001110000011000000110010001100100010100100100000011100000110111101110101011100100010000001100110110000111010100101100100110000111010100101110010011001010111001000100000011011000110010101110101011100100111001100100000011000110110111101101101011100001100001110101001011101000110010101101110011000110110010101110011001000000110001101101111011011010111000001101100110000111010100101101101011001010110111001110100011000010110100101110010011001010111001100100000011001010110111000100000011100110110001101101001011001010110111001100011011001010111001100100000011001000110010100100000011011001110001010000000100110010110100101101110011001100110111101110010011011010110000101110100011010010110111101101110001011100010000001000011010100100100100101010011011101000100000101001100001000000110010101110011011101000010000001101110110000111010100100100000011011000110010100100000001100010110010101110010001000000110101001100001011011100111011001101001011001010111001000100000001100100011000000110001001101010010000001110011011011110111010101110011001000000110110001100001001000000111010001110101011101000110010101101100011011000110010100100000011001000111010100100000010000110100111001010010010100110010110000100000011001000110010100100000011011001110001010000000100110010101010101101110011010010111011001100101011100100111001101101001011101001100001110101001001000000100110001101001011011000110110001100101001000000011000100100000011001010111010000100000011001000110010100100000011011001110001010000000100110010100010101100011011011110110110001100101001000000100001101100101011011100111010001110010011000010110110001100101001000000110010001100101001000000100110001101001011011000110110001100101001000000110010101101110001000000111000001100001011100100111010001100101011011100110000101110010011010010110000101110100001000000110000101110110011001010110001100100000011011001110001010000000100110010101010101101110011010010111011001100101011100100111001101101001011101001100001110101001001000000100110001101001011011000110110001100101001000000011001100101100001000000100100101101110011100100110100101100001001000000110010101110100001000000110110011100010100000001001100101001001011011100111001101110100011010010111010001110101011101000010000001001101011010010110111001100101011100110010000001010100011001010110110001100101011000110110111101101101001011100010000001000011010100100100100101010011011101000100000101001100001000000110010101110011011101000010000001101101011001010110110101100010011100100110010100100000011001000110010100100000011011001110001010000000100110010110100101101110011100110111010001101001011101000111010101110100001000000110010001100101001000000111001001100101011000110110100001100101011100100110001101101000011001010111001100100000011010010110111001110100011001010111001001100100011010010111001101100011011010010111000001101100011010010110111001100001011010010111001001100101011100110010000001001001010100100100001101001001010000110100000100100000111000101000000010010011001000000101010101010011010100100010000001000011010011100101001001010011001000000011001100110011001110000011000000100000001010000111011101110111011101110010111001101001011100100110001101101001011000110110000100101110011101010110111001101001011101100010110101101100011010010110110001101100011001010011000100101110011001100111001000101001001011100010000001001100111000101000000010011001011101010110111001101001011101001100001110101001001000000110010101110011011101000010000001100011011011110110110101110000011011110111001111000011101010010110010100100000011001000110010100100000011100000111001011000011101010000111001100100000011001000110010100100000001101000011001100110000001000000110110101100101011011010110001001110010011001010111001100100000001010000011001000110010001100100010000001110000011001010111001001101101011000010110111001100101011011100111010001110011001000000110010101110100001000000111000001101100011101010111001100100000011001000110010100100000001100100011000000110000001000000110111001101111011011100010000001110000011001010111001001101101011000010110111001100101011011100111010001110011001010010010000001100100011011110110111001110100001000000011001000110010001000000111000001100101011100100110110101100001011011100110010101101110011101000111001100100000010000110100111001010010010100110010000001100101011101000010000000110010001101110010000001110000011001010111001001101101011000010110111001100101011011100111010001110011001000000100100101101110011100100110100101100001001011100010000001001100011001010111001100100000011000010110001101110100011010010111011001101001011101001100001110101001011100110010000001100100011001010010000001110010011001010110001101101000011001010111001001100011011010000110010100100000011001000110010100100000010000110101001001001001010100110111010001000001010011000010000001100011011011110110111001100011011001010111001001101110011001010110111001110100001000000110110001100101011100110010000001110100011010001100001110101001011011010110000101110100011010010111000101110101011001010111001100100000011011000110100111000011101010010110010101110011001000000110000101110101011110000010000001100111011100100110000101101110011001000111001100100000011001010110111001101010011001010111010101111000001000000111001101100011011010010110010101101110011101000110100101100110011010010111000101110101011001010111001100100000011001010111010000100000011100110110111101100011011010011100001110101001011101000110000101110101011110000010000001100100011101010010000001101101011011110110110101100101011011100111010000100000011101000110010101101100011100110010000001110001011101010110010100100000001110100010000001000010011010010110011101000100011000010111010001100001001011000010000001101100011011110110011101101001011000110110100101100101011011000010110000100000011010010110110101100001011001110110010100100000011001010111010000100000011100110110010101110011001000000111010101110011011000010110011101100101011100110010110000100000011010010110111001110100011001010111001001100001011000110111010001101001011011110110111001110011001000000110100001101111011011010110110101100101001011010110110101100001011000110110100001101001011011100110010100101100001000000111001001101111011000100110111101110100011010010111000101110101011001010010110000100000011000110110111101101101011011010110000101101110011001000110010100100000011001010111010000100000011100110111010101110000011001010111001001110110011010010111001101101001011011110110111000100000011001000110010100100000011001110111001001100001011011100110010001110011001000000111001101111001011100110111010011000011101010000110110101100101011100110010110000100000011100110111100101110011011101001100001110101000011011010110010101110011001000000110010101101101011000100110000101110010011100010111010111000011101010010111001100100000011010010110111001110100011001010110110001101100011010010110011101100101011011100111010001110011001011000010000001100010011010010110111100101101011010010110111001100110011011110111001001101101011000010111010001101001011100010111010101100101111000101000000010100110001000000110000101110110011001010110001100100000011001000110010101110011001000000110000101110000011100000110110001101001011000110110000101110100011010010110111101101110011100110010000001101110011011110111010001100001011011010110110101100101011011100111010000100000011001000110000101101110011100110010000001101100011001010111001100100000011100110110010101100011011101000110010101110101011100100111001100100000011001000110010100100000011011001110001010000000100110010110100101101110011001000111010101110011011101000111001001101001011001010010000001100100011101010010000001100011011011110110110101101101011001010111001001100011011001010010110000100000011001000110010101110011001000000111010001100101011000110110100001101110011011110110110001101111011001110110100101100101011100110010000001110000011011110111010101110010001000000110110001100001001000000111001101100001011011100111010011000011101010010010110000100000011001000110010101110011001000000111001101101101011000010111001001110100001000000110011101110010011010010110010001110011001011100100001101010010010010010101001101110100010000010100110000100000001010000100001101100101011011100111010001110010011001010010000001100100011001010010000001010010011001010110001101101000011001010111001001100011011010000110010100100000011001010110111000100000010010010110111001100110011011110111001001101101011000010111010001101001011100010111010101100101001011000010000001010011011010010110011101101110011000010110110000100000011001010111010000100000010000010111010101110100011011110110110101100001011101000110100101110001011101010110010100100000011001000110010100100000010011000110100101101100011011000110010100101001001000000110010101110011011101000010000001110101011011100110010100100000011101010110111001101001011101001100001110101001001000000110110101101001011110000111010001100101001000000110010001100101001000000111001001100101011000110110100001100101011100100110001101101000011001010010000000101000010101010100110101010010001000000011100100110001001110000011100100101001001000000111001011000011101010010111001101110101011011000111010001100001011011100111010000100000011001000110010100100000011011000110000100100000011001100111010101110011011010010110111101101110001000000110010001110101001000000100110001000001010001110100100101010011001000000010100001001100011000010110001001101111011100100110000101110100011011110110100101110010011001010010000001100100111000101000000010011001010000010111010101110100011011110110110101100001011101000110100101110001011101010110010100101100001000000100011111000011101010010110111001101001011001010010000001001001011011100110011001101111011100100110110101100001011101000110100101110001011101010110010100100000011001010111010000100000010100110110100101100111011011100110000101101100001000000010110100100000010101010100110101010010001000000011100000110010001100010011100100101001001000000110010101110100001000000110010001110101001000000100110001001001010001100100110000100000001010000100110001100001011000100110111101110010011000010111010001101111011010010111001001100101001000000110010011100010100000001001100101001001011011100110011001101111011100100110110101100001011101000110100101110001011101010110010100100000010001100110111101101110011001000110000101101101011001010110111001110100011000010110110001100101001000000110010001100101001000000100110001101001011011000110110001100101001000000010110100100000010101010100110101010010001000000011100000110000001100100011001000101001001000000111000001101111011101010111001000100000011001101100001110101001011001001100001110101001011100100110010101110010001000000110110001100101011101010111001001110011001000000110001101101111011011010111000011000011101010010111010001100101011011100110001101100101011100110010000001100011011011110110110101110000011011001100001110101001011011010110010101101110011101000110000101101001011100100110010101110011001000000110010101101110001000000111001101100011011010010110010101101110011000110110010101110011001000000110010001100101001000000110110011100010100000001001100101101001011011100110011001101111011100100110110101100001011101000110100101101111011011100010111000100000010000110101001001001001010100110111010001000001010011000010000001100101011100110111010000100000011011101100001110101001001000000110110001100101001000000011000101100101011100100010000001101010011000010110111001110110011010010110010101110010001000000011001000110000001100010011010100100000011100110110111101110101011100110010000001101100011000010010000001110100011101010111010001100101011011000110110001100101001000000110010001110101001000000100001101001110010100100101001100101100001000000110010001100101001000000110110011100010100000001001100101010101011011100110100101110110011001010111001001110011011010010111010011000011101010010010000001001100011010010110110001101100011001010010000000110001001000000110010101110100001000000110010001100101001000000110110011100010100000001001100101000101011000110110111101101100011001010010000001000011011001010110111001110100011100100110000101101100011001010010000001100100011001010010000001001100011010010110110001101100011001010010000001100101011011100010000001110000011000010111001001110100011001010110111001100001011100100110100101100001011101000010000001100001011101100110010101100011001000000110110011100010100000001001100101010101011011100110100101110110011001010111001001110011011010010111010011000011101010010010000001001100011010010110110001101100011001010010000000110011001011000010000001001001011011100111001001101001011000010010000001100101011101000010000001101100111000101000000010011001010010010110111001110011011101000110100101110100011101010111010000100000010011010110100101101110011001010111001100100000010101000110010101101100011001010110001101101111011011010010111000100000010000110101001001001001010100110111010001000001010011000010000001100101011100110111010000100000011011010110010101101101011000100111001001100101001000000110010001100101001000000110110011100010100000001001100101101001011011100111001101110100011010010111010001110101011101000010000001100100011001010010000001110010011001010110001101101000011001010111001001100011011010000110010101110011001000000110100101101110011101000110010101110010011001000110100101110011011000110110100101110000011011000110100101101110011000010110100101110010011001010111001100100000010010010101001001000011010010010100001101000001001000001110001010000000100100110010000001010101010100110101001000100000010000110100111001010010010100110010000000110011001100110011100000110000001000000010100001110111011101110111011100101110011010010111001001100011011010010110001101100001001011100111010101101110011010010111011000101101011011000110100101101100011011000110010100110001001011100110011001110010001010010010111000100000010011001110001010000000100110010111010101101110011010010111010011000011101010010010000001100101011100110111010000100000011000110110111101101101011100000110111101110011110000111010100101100101001000000110010001100101001000000111000001110010110000111010100001110011001000000110010001100101001000000011010000110011001100000010000001101101011001010110110101100010011100100110010101110011001000000010100000110010001100100011001000100000011100000110010101110010011011010110000101101110011001010110111001110100011100110010000001100101011101000010000001110000011011000111010101110011001000000110010001100101001000000011001000110000001100000010000001101110011011110110111000100000011100000110010101110010011011010110000101101110011001010110111001110100011100110010100100100000011001000110111101101110011101000010000000110010001100100010000001110000011001010111001001101101011000010110111001100101011011100111010001110011001000000100001101001110010100100101001100100000011001010111010000100000001100100011011100100000011100000110010101110010011011010110000101101110011001010110111001110100011100110010000001001001011011100111001001101001011000010010111000100000010011000110010101110011001000000110000101100011011101000110100101110110011010010111010011000011101010010111001100100000011001000110010100100000011100100110010101100011011010000110010101110010011000110110100001100101001000000110010001100101001000000100001101010010010010010101001101110100010000010100110000100000011000110110111101101110011000110110010101110010011011100110010101101110011101000010000001101100011001010111001100100000011101000110100011000011101010010110110101100001011101000110100101110001011101010110010101110011001000000110110001101001110000111010100101100101011100110010000001100001011101010111100000100000011001110111001001100001011011100110010001110011001000000110010101101110011010100110010101110101011110000010000001110011011000110110100101100101011011100111010001101001011001100110100101110001011101010110010101110011001000000110010101110100001000000111001101101111011000110110100111000011101010010111010001100001011101010111100000100000011001000111010100100000011011010110111101101101011001010110111001110100001000000111010001100101011011000111001100100000011100010111010101100101001000000011101000100000010000100110100101100111010001000110000101110100011000010010110000100000011011000110111101100111011010010110001101101001011001010110110000101100001000000110100101101101011000010110011101100101001000000110010101110100001000000111001101100101011100110010000001110101011100110110000101100111011001010111001100101100001000000110100101101110011101000110010101110010011000010110001101110100011010010110111101101110011100110010000001101000011011110110110101101101011001010010110101101101011000010110001101101000011010010110111001100101001011000010000001110010011011110110001001101111011101000110100101110001011101010110010100101100001000000110001101101111011011010110110101100001011011100110010001100101001000000110010101110100001000000111001101110101011100000110010101110010011101100110100101110011011010010110111101101110001000000110010001100101001000000110011101110010011000010110111001100100011100110010000001110011011110010111001101110100110000111010100001101101011001010111001100101100001000000111001101111001011100110111010011000011101010000110110101100101011100110010000001100101011011010110001001100001011100100111000101110101110000111010100101110011001000000110100101101110011101000110010101101100011011000110100101100111011001010110111001110100011100110010110000100000011000100110100101101111001011010110100101101110011001100110111101110010011011010110000101110100011010010111000101110101011001011110001010000000101001100010000001100001011101100110010101100011001000000110010001100101011100110010000001100001011100000111000001101100011010010110001101100001011101000110100101101111011011100111001100100000011011100110111101110100011000010110110101101101011001010110111001110100001000000110010001100001011011100111001100100000011011000110010101110011001000000111001101100101011000110111010001100101011101010111001001110011001000000110010001100101001000000110110011100010100000001001100101101001011011100110010001110101011100110111010001110010011010010110010100100000011001000111010100100000011000110110111101101101011011010110010101110010011000110110010100101100001000000110010001100101011100110010000001110100011001010110001101101000011011100110111101101100011011110110011101101001011001010111001100100000011100000110111101110101011100100010000001101100011000010010000001110011011000010110111001110100110000111010100100101100001000000110010001100101011100110010000001110011011011010110000101110010011101000010000001100111011100100110100101100100011100110010111001000011010100100100100101010011011101000100000101001100001000000010100001000011011001010110111001110100011100100110010100100000011001000110010100100000010100100110010101100011011010000110010101110010011000110110100001100101001000000110010101101110001000000100100101101110011001100110111101110010011011010110000101110100011010010111000101110101011001010010110000100000010100110110100101100111011011100110000101101100001000000110010101110100001000000100000101110101011101000110111101101101011000010111010001101001011100010111010101100101001000000110010001100101001000000100110001101001011011000110110001100101001010010010000001100101011100110111010000100000011101010110111001100101001000000111010101101110011010010111010011000011101010010010000001101101011010010111100001110100011001010010000001100100011001010010000001110010011001010110001101101000011001010111001001100011011010000110010100100000001010000101010101001101010100100010000000111001001100010011100000111001001010010010000001110010110000111010100101110011011101010110110001110100011000010110111001110100001000000110010001100101001000000110110001100001001000000110011001110101011100110110100101101111011011100010000001100100011101010010000001001100010000010100011101001001010100110010000000101000010011000110000101100010011011110111001001100001011101000110111101101001011100100110010100100000011001001110001010000000100110010100000101110101011101000110111101101101011000010111010001101001011100010111010101100101001011000010000001000111110000111010100101101110011010010110010100100000010010010110111001100110011011110111001001101101011000010111010001101001011100010111010101100101001000000110010101110100001000000101001101101001011001110110111001100001011011000010000000101101001000000101010101001101010100100010000000111000001100100011000100111001001010010010000001100101011101000010000001100100011101010010000001001100010010010100011001001100001000000010100001001100011000010110001001101111011100100110000101110100011011110110100101110010011001010010000001100100111000101000000010011001010010010110111001100110011011110111001001101101011000010111010001101001011100010111010101100101001000000100011001101111011011100110010001100001011011010110010101101110011101000110000101101100011001010010000001100100011001010010000001001100011010010110110001101100011001010010000000101101001000000101010101001101010100100010000000111000001100000011001000110010001010010010000001110000011011110111010101110010001000000110011011000011101010010110010011000011101010010111001001100101011100100010000001101100011001010111010101110010011100110010000001100011011011110110110101110000110000111010100101110100011001010110111001100011011001010111001100100000011000110110111101101101011100000110110011000011101010010110110101100101011011100111010001100001011010010111001001100101011100110010000001100101011011100010000001110011011000110110100101100101011011100110001101100101011100110010000001100100011001010010000001101100111000101000000010011001011010010110111001100110011011110111001001101101011000010111010001101001011011110110111000101110001000000100001101010010010010010101001101110100010000010100110000100000011001010111001101110100001000000110111011000011101010010010000001101100011001010010000000110001011001010111001000100000011010100110000101101110011101100110100101100101011100100010000000110010001100000011000100110101001000000111001101101111011101010111001100100000011011000110000100100000011101000111010101110100011001010110110001101100011001010010000001100100011101010010000001000011010011100101001001010011001011000010000001100100011001010010000001101100111000101000000010011001010101010110111001101001011101100110010101110010011100110110100101110100110000111010100100100000010011000110100101101100011011000110010100100000001100010010000001100101011101000010000001100100011001010010000001101100111000101000000010011001010001010110001101101111011011000110010100100000010000110110010101101110011101000111001001100001011011000110010100100000011001000110010100100000010011000110100101101100011011000110010100100000011001010110111000100000011100000110000101110010011101000110010101101110011000010111001001101001011000010111010000100000011000010111011001100101011000110010000001101100111000101000000010011001010101010110111001101001011101100110010101110010011100110110100101110100110000111010100100100000010011000110100101101100011011000110010100100000001100110010110000100000010010010110111001110010011010010110000100100000011001010111010000100000011011001110001010000000100110010100100101101110011100110111010001101001011101000111010101110100001000000100110101101001011011100110010101110011001000000101010001100101011011000110010101100011011011110110110100101110001000000100001101010010010010010101001101110100010000010100110000100000011001010111001101110100001000000110110101100101011011010110001001110010011001010010000001100100011001010010000001101100111000101000000010011001011010010110111001110011011101000110100101110100011101010111010000100000011001000110010100100000011100100110010101100011011010000110010101110010011000110110100001100101011100110010000001101001011011100111010001100101011100100110010001101001011100110110001101101001011100000110110001101001011011100110000101101001011100100110010101110011001000000100100101010010010000110100100101000011010000010010000011100010100000001001001100100000010101010101001101010010001000000100001101001110010100100101001100100000001100110011001100111000001100000010000000101000011101110111011101110111001011100110100101110010011000110110100101100011011000010010111001110101011011100110100101110110001011010110110001101001011011000110110001100101001100010010111001100110011100100010100100101110001000000100110011100010100000001001100101110101011011100110100101110100110000111010100100100000011001010111001101110100001000000110001101101111011011010111000001101111011100111100001110101001011001010010000001100100011001010010000001110000011100101100001110101000011100110010000001100100011001010010000000110100001100110011000000100000011011010110010101101101011000100111001001100101011100110010000000101000001100100011001000110010001000000111000001100101011100100110110101100001011011100110010101101110011101000111001100100000011001010111010000100000011100000110110001110101011100110010000001100100011001010010000000110010001100000011000000100000011011100110111101101110001000000111000001100101011100100110110101100001011011100110010101101110011101000111001100101001001000000110010001101111011011100111010000100000001100100011001000100000011100000110010101110010011011010110000101101110011001010110111001110100011100110010000001000011010011100101001001010011001000000110010101110100001000000011001000110111001000000111000001100101011100100110110101100001011011100110010101101110011101000111001100100000010010010110111001110010011010010110000100101110001000000100110001100101011100110010000001100001011000110111010001101001011101100110100101110100110000111010100101110011001000000110010001100101001000000111001001100101011000110110100001100101011100100110001101101000011001010010000001100100011001010010000001000011010100100100100101010011011101000100000101001100001000000110001101101111011011100110001101100101011100100110111001100101011011100111010000100000011011000110010101110011001000000111010001101000110000111010100101101101011000010111010001101001011100010111010101100101011100110010000001101100011010011100001110101001011001010111001100100000011000010111010101111000001000000110011101110010011000010110111001100100011100110010000001100101011011100110101001100101011101010111100000100000011100110110001101101001011001010110111001110100011010010110011001101001011100010111010101100101011100110010000001100101011101000010000001110011011011110110001101101001110000111010100101110100011000010111010101111000001000000110010001110101001000000110110101101111011011010110010101101110011101000010000001110100011001010110110001110011001000000111000101110101011001010010000000111010001000000100001001101001011001110100010001100001011101000110000100101100001000000110110001101111011001110110100101100011011010010110010101101100001011000010000001101001011011010110000101100111011001010010000001100101011101000010000001110011011001010111001100100000011101010111001101100001011001110110010101110011001011000010000001101001011011100111010001100101011100100110000101100011011101000110100101101111011011100111001100100000011010000110111101101101011011010110010100101101011011010110000101100011011010000110100101101110011001010010110000100000011100100110111101100010011011110111010001101001011100010111010101100101001011000010000001100011011011110110110101101101011000010110111001100100011001010010000001100101011101000010000001110011011101010111000001100101011100100111011001101001011100110110100101101111011011100010000001100100011001010010000001100111011100100110000101101110011001000111001100100000011100110111100101110011011101001100001110101000011011010110010101110011001011000010000001110011011110010111001101110100110000111010100001101101011001010111001100100000011001010110110101100010011000010111001001110001011101011100001110101001011100110010000001101001011011100111010001100101011011000110110001101001011001110110010101101110011101000111001100101100001000000110001001101001011011110010110101101001011011100110011001101111011100100110110101100001011101000110100101110001011101010110010111100010100000001010011000100000011000010111011001100101011000110010000001100100011001010111001100100000011000010111000001110000011011000110100101100011011000010111010001101001011011110110111001110011001000000110111001101111011101000110000101101101011011010110010101101110011101000010000001100100011000010110111001110011001000000110110001100101011100110010000001110011011001010110001101110100011001010111010101110010011100110010000001100100011001010010000001101100111000101000000010011001011010010110111001100100011101010111001101110100011100100110100101100101001000000110010001110101001000000110001101101111011011010110110101100101011100100110001101100101001011000010000001100100011001010111001100100000011101000110010101100011011010000110111001101111011011000110111101100111011010010110010101110011001000000111000001101111011101010111001000100000011011000110000100100000011100110110000101101110011101001100001110101001001011000010000001100100011001010111001100100000011100110110110101100001011100100111010000100000011001110111001001101001011001000111001100101110010000110101001001001001010100110111010001000001010011000010000000101000010000110110010101101110011101000111001001100101001000000110010001100101001000000101001001100101011000110110100001100101011100100110001101101000011001010010000001100101011011100010000001001001011011100110011001101111011100100110110101100001011101000110100101110001011101010110010100101100001000000101001101101001011001110110111001100001011011000010000001100101011101000010000001000001011101010111010001101111011011010110000101110100011010010111000101110101011001010010000001100100011001010010000001001100011010010110110001101100011001010010100100100000011001010111001101110100001000000111010101101110011001010010000001110101011011100110100101110100110000111010100100100000011011010110100101111000011101000110010100100000011001000110010100100000011100100110010101100011011010000110010101110010011000110110100001100101001000000010100001010101010011010101001000100000001110010011000100111000001110010010100100100000011100101100001110101001011100110111010101101100011101000110000101101110011101000010000001100100011001010010000001101100011000010010000001100110011101010111001101101001011011110110111000100000011001000111010100100000010011000100000101000111010010010101001100100000001010000100110001100001011000100110111101110010011000010111010001101111011010010111001001100101001000000110010011100010100000001001100101000001011101010111010001101111011011010110000101110100011010010111000101110101011001010010110000100000010001111100001110101001011011100110100101100101001000000100100101101110011001100110111101110010011011010110000101110100011010010111000101110101011001010010000001100101011101000010000001010011011010010110011101101110011000010110110000100000001011010010000001010101010011010101001000100000001110000011001000110001001110010010100100100000011001010111010000100000011001000111010100100000010011000100100101000110010011000010000000101000010011000110000101100010011011110111001001100001011101000110111101101001011100100110010100100000011001001110001010000000100110010100100101101110011001100110111101110010011011010110000101110100011010010111000101110101011001010010000001000110011011110110111001100100011000010110110101100101011011100111010001100001011011000110010100100000011001000110010100100000010011000110100101101100011011000110010100100000001011010010000001010101010011010101001000100000001110000011000000110010001100100010100100100000011100000110111101110101011100100010000001100110110000111010100101100100110000111010100101110010011001010111001000100000011011000110010101110101011100100111001100100000011000110110111101101101011100001100001110101001011101000110010101101110011000110110010101110011001000000110001101101111011011010111000001101100110000111010100101101101011001010110111001110100011000010110100101110010011001010111001100100000011001010110111000100000011100110110001101101001011001010110111001100011011001010111001100100000011001000110010100100000011011001110001010000000100110010110100101101110011001100110111101110010011011010110000101110100011010010110111101101110001011100010000001000011010100100100100101010011011101000100000101001100001000000110010101110011011101000010000001101110110000111010100100100000011011000110010100100000001100010110010101110010001000000110101001100001011011100111011001101001011001010111001000100000001100100011000000110001001101010010000001110011011011110111010101110011001000000110110001100001001000000111010001110101011101000110010101101100011011000110010100100000011001000111010100100000010000110100111001010010010100110010110000100000011001000110010100100000011011001110001010000000100110010101010101101110011010010111011001100101011100100111001101101001011101001100001110101001001000000100110001101001011011000110110001100101001000000011000100100000011001010111010000100000011001000110010100100000011011001110001010000000100110010100010101100011011011110110110001100101001000000100001101100101011011100111010001110010011000010110110001100101001000000110010001100101001000000100110001101001011011000110110001100101001000000110010101101110001000000111000001100001011100100111010001100101011011100110000101110010011010010110000101110100001000000110000101110110011001010110001100100000011011001110001010000000100110010101010101101110011010010111011001100101011100100111001101101001011101001100001110101001001000000100110001101001011011000110110001100101001000000011001100101100001000000100100101101110011100100110100101100001001000000110010101110100001000000110110011100010100000001001100101001001011011100111001101110100011010010111010001110101011101000010000001001101011010010110111001100101011100110010000001010100011001010110110001100101011000110110111101101101001011100010000001000011010100100100100101010011011101000100000101001100001000000110010101110011011101000010000001101101011001010110110101100010011100100110010100100000011001000110010100100000011011001110001010000000100110010110100101101110011100110111010001101001011101000111010101110100001000000110010001100101001000000111001001100101011000110110100001100101011100100110001101101000011001010111001100100000011010010110111001110100011001010111001001100100011010010111001101100011011010010111000001101100011010010110111001100001011010010111001001100101011100110010000001001001010100100100001101001001010000110100000100100000111000101000000010010011001000000101010101010011010100100010000001000011010011100101001001010011001000000011001100110011001110000011000000100000001010000111011101110111011101110010111001101001011100100110001101101001011000110110000100101110011101010110111001101001011101100010110101101100011010010110110001101100011001010011000100101110011001100111001000101001001011100010000001001100111000101000000010011001011101010110111001101001011101001100001110101001001000000110010101110011011101000010000001100011011011110110110101110000011011110111001111000011101010010110010100100000011001000110010100100000011100000111001011000011101010000111001100100000011001000110010100100000001101000011001100110000001000000110110101100101011011010110001001110010011001010111001100100000001010000011001000110010001100100010000001110000011001010111001001101101011000010110111001100101011011100111010001110011001000000110010101110100001000000111000001101100011101010111001100100000011001000110010100100000001100100011000000110000001000000110111001101111011011100010000001110000011001010111001001101101011000010110111001100101011011100111010001110011001010010010000001100100011011110110111001110100001000000011001000110010001000000111000001100101011100100110110101100001011011100110010101101110011101000111001100100000010000110100111001010010010100110010000001100101011101000010000000110010001101110010000001110000011001010111001001101101011000010110111001100101011011100111010001110011001000000100100101101110011100100110100101100001001011100010000001001100011001010111001100100000011000010110001101110100011010010111011001101001011101001100001110101001011100110010000001100100011001010010000001110010011001010110001101101000011001010111001001100011011010000110010100100000011001000110010100100000010000110101001001001001010100110111010001000001010011000010000001100011011011110110111001100011011001010111001001101110011001010110111001110100001000000110110001100101011100110010000001110100011010001100001110101001011011010110000101110100011010010111000101110101011001010111001100100000011011000110100111000011101010010110010101110011001000000110000101110101011110000010000001100111011100100110000101101110011001000111001100100000011001010110111001101010011001010111010101111000001000000111001101100011011010010110010101101110011101000110100101100110011010010111000101110101011001010111001100100000011001010111010000100000011100110110111101100011011010011100001110101001011101000110000101110101011110000010000001100100011101010010000001101101011011110110110101100101011011100111010000100000011101000110010101101100011100110010000001110001011101010110010100100000001110100010000001000010011010010110011101000100011000010111010001100001001011000010000001101100011011110110011101101001011000110110100101100101011011000010110000100000011010010110110101100001011001110110010100100000011001010111010000100000011100110110010101110011001000000111010101110011011000010110011101100101011100110010110000100000011010010110111001110100011001010111001001100001011000110111010001101001011011110110111001110011001000000110100001101111011011010110110101100101001011010110110101100001011000110110100001101001011011100110010100101100001000000111001001101111011000100110111101110100011010010111000101110101011001010010110000100000011000110110111101101101011011010110000101101110011001000110010100100000011001010111010000100000011100110111010101110000011001010111001001110110011010010111001101101001011011110110111000100000011001000110010100100000011001110111001001100001011011100110010001110011001000000111001101111001011100110111010011000011101010000110110101100101011100110010110000100000011100110111100101110011011101001100001110101000011011010110010101110011001000000110010101101101011000100110000101110010011100010111010111000011101010010111001100100000011010010110111001110100011001010110110001101100011010010110011101100101011011100111010001110011001011000010000001100010011010010110111100101101011010010110111001100110011011110111001001101101011000010111010001101001011100010111010101100101111000101000000010100110001000000110000101110110011001010110001100100000011001000110010101110011001000000110000101110000011100000110110001101001011000110110000101110100011010010110111101101110011100110010000001101110011011110111010001100001011011010110110101100101011011100111010000100000011001000110000101101110011100110010000001101100011001010111001100100000011100110110010101100011011101000110010101110101011100100111001100100000011001000110010100100000011011001110001010000000100110010110100101101110011001000111010101110011011101000111001001101001011001010010000001100100011101010010000001100011011011110110110101101101011001010111001001100011011001010010110000100000011001000110010101110011001000000111010001100101011000110110100001101110011011110110110001101111011001110110100101100101011100110010000001110000011011110111010101110010001000000110110001100001001000000111001101100001011011100111010011000011101010010010110000100000011001000110010101110011001000000111001101101101011000010111001001110100001000000110011101110010011010010110010001110011001011100100001101010010010010010101001101110100010000010100110000100000001010000100001101100101011011100111010001110010011001010010000001100100011001010010000001010010011001010110001101101000011001010111001001100011011010000110010100100000011001010110111000100000010010010110111001100110011011110111001001101101011000010111010001101001011100010111010101100101001011000010000001010011011010010110011101101110011000010110110000100000011001010111010000100000010000010111010101110100011011110110110101100001011101000110100101110001011101010110010100100000011001000110010100100000010011000110100101101100011011000110010100101001001000000110010101110011011101000010000001110101011011100110010100100000011101010110111001101001011101001100001110101001001000000110110101101001011110000111010001100101001000000110010001100101001000000111001001100101011000110110100001100101011100100110001101101000011001010010000000101000010101010100110101010010001000000011100100110001001110000011100100101001001000000111001011000011101010010111001101110101011011000111010001100001011011100111010000100000011001000110010100100000011011000110000100100000011001100111010101110011011010010110111101101110001000000110010001110101001000000100110001000001010001110100100101010011001000000010100001001100011000010110001001101111011100100110000101110100011011110110100101110010011001010010000001100100111000101000000010011001010000010111010101110100011011110110110101100001011101000110100101110001011101010110010100101100001000000100011111000011101010010110111001101001011001010010000001001001011011100110011001101111011100100110110101100001011101000110100101110001011101010110010100100000011001010111010000100000010100110110100101100111011011100110000101101100001000000010110100100000010101010100110101010010001000000011100000110010001100010011100100101001001000000110010101110100001000000110010001110101001000000100110001001001010001100100110000100000001010000100110001100001011000100110111101110010011000010111010001101111011010010111001001100101001000000110010011100010100000001001100101001001011011100110011001101111011100100110110101100001011101000110100101110001011101010110010100100000010001100110111101101110011001000110000101101101011001010110111001110100011000010110110001100101001000000110010001100101001000000100110001101001011011000110110001100101001000000010110100100000010101010100110101010010001000000011100000110000001100100011001000101001001000000111000001101111011101010111001000100000011001101100001110101001011001001100001110101001011100100110010101110010001000000110110001100101011101010111001001110011001000000110001101101111011011010111000011000011101010010111010001100101011011100110001101100101011100110010000001100011011011110110110101110000011011001100001110101001011011010110010101101110011101000110000101101001011100100110010101110011001000000110010101101110001000000111001101100011011010010110010101101110011000110110010101110011001000000110010001100101001000000110110011100010100000001001100101101001011011100110011001101111011100100110110101100001011101000110100101101111011011100010111000100000010000110101001001001001010100110111010001000001010011000010000001100101011100110111010000100000011011101100001110101001001000000110110001100101001000000011000101100101011100100010000001101010011000010110111001110110011010010110010101110010001000000011001000110000001100010011010100100000011100110110111101110101011100110010000001101100011000010010000001110100011101010111010001100101011011000110110001100101001000000110010001110101001000000100001101001110010100100101001100101100001000000110010001100101001000000110110011100010100000001001100101010101011011100110100101110110011001010111001001110011011010010111010011000011101010010010000001001100011010010110110001101100011001010010000000110001001000000110010101110100001000000110010001100101001000000110110011100010100000001001100101000101011000110110111101101100011001010010000001000011011001010110111001110100011100100110000101101100011001010010000001100100011001010010000001001100011010010110110001101100011001010010000001100101011011100010000001110000011000010111001001110100011001010110111001100001011100100110100101100001011101000010000001100001011101100110010101100011001000000110110011100010100000001001100101010101011011100110100101110110011001010111001001110011011010010111010011000011101010010010000001001100011010010110110001101100011001010010000000110011001011000010000001001001011011100111001001101001011000010010000001100101011101000010000001101100111000101000000010011001010010010110111001110011011101000110100101110100011101010111010000100000010011010110100101101110011001010111001100100000010101000110010101101100011001010110001101101111011011010010111000100000010000110101001001001001010100110111010001000001010011000010000001100101011100110111010000100000011011010110010101101101011000100111001001100101001000000110010001100101001000000110110011100010100000001001100101101001011011100111001101110100011010010111010001110101011101000010000001100100011001010010000001110010011001010110001101101000011001010111001001100011011010000110010101110011001000000110100101101110011101000110010101110010011001000110100101110011011000110110100101110000011011000110100101101110011000010110100101110010011001010111001100100000010010010101001001000011010010010100001101000001001000001110001010000000100100110010000001010101010100110101001000100000010000110100111001010010010100110010000000110011001100110011100000110000001000000010100001110111011101110111011100101110011010010111001001100011011010010110001101100001001011100111010101101110011010010111011000101101011011000110100101101100011011000110010100110001001011100110011001110010001010010010111000100000010011001110001010000000100110010111010101101110011010010111010011000011101010010010000001100101011100110111010000100000011000110110111101101101011100000110111101110011110000111010100101100101001000000110010001100101001000000111000001110010110000111010100001110011001000000110010001100101001000000011010000110011001100000010000001101101011001010110110101100010011100100110010101110011001000000010100000110010001100100011001000100000011100000110010101110010011011010110000101101110011001010110111001110100011100110010000001100101011101000010000001110000011011000111010101110011001000000110010001100101001000000011001000110000001100000010000001101110011011110110111000100000011100000110010101110010011011010110000101101110011001010110111001110100011100110010100100100000011001000110111101101110011101000010000000110010001100100010000001110000011001010111001001101101011000010110111001100101011011100111010001110011001000000100001101001110010100100101001100100000011001010111010000100000001100100011011100100000011100000110010101110010011011010110000101101110011001010110111001110100011100110010000001001001011011100111001001101001011000010010111000100000010011000110010101110011001000000110000101100011011101000110100101110110011010010111010011000011101010010111001100100000011001000110010100100000011100100110010101100011011010000110010101110010011000110110100001100101001000000110010001100101001000000100001101010010010010010101001101110100010000010100110000100000011000110110111101101110011000110110010101110010011011100110010101101110011101000010000001101100011001010111001100100000011101000110100011000011101010010110110101100001011101000110100101110001011101010110010101110011001000000110110001101001110000111010100101100101011100110010000001100001011101010111100000100000011001110111001001100001011011100110010001110011001000000110010101101110011010100110010101110101011110000010000001110011011000110110100101100101011011100111010001101001011001100110100101110001011101010110010101110011001000000110010101110100001000000111001101101111011000110110100111000011101010010111010001100001011101010111100000100000011001000111010100100000011011010110111101101101011001010110111001110100001000000111010001100101011011000111001100100000011100010111010101100101001000000011101000100000010000100110100101100111010001000110000101110100011000010010110000100000011011000110111101100111011010010110001101101001011001010110110000101100001000000110100101101101011000010110011101100101001000000110010101110100001000000111001101100101011100110010000001110101011100110110000101100111011001010111001100101100001000000110100101101110011101000110010101110010011000010110001101110100011010010110111101101110011100110010000001101000011011110110110101101101011001010010110101101101011000010110001101101000011010010110111001100101001011000010000001110010011011110110001001101111011101000110100101110001011101010110010100101100001000000110001101101111011011010110110101100001011011100110010001100101001000000110010101110100001000000111001101110101011100000110010101110010011101100110100101110011011010010110111101101110001000000110010001100101001000000110011101110010011000010110111001100100011100110010000001110011011110010111001101110100110000111010100001101101011001010111001100101100001000000111001101111001011100110111010011000011101010000110110101100101011100110010000001100101011011010110001001100001011100100111000101110101110000111010100101110011001000000110100101101110011101000110010101101100011011000110100101100111011001010110111001110100011100110010110000100000011000100110100101101111001011010110100101101110011001100110111101110010011011010110000101110100011010010111000101110101011001011110001010000000101001100010000001100001011101100110010101100011001000000110010001100101011100110010000001100001011100000111000001101100011010010110001101100001011101000110100101101111011011100111001100100000011011100110111101110100011000010110110101101101011001010110111001110100001000000110010001100001011011100111001100100000011011000110010101110011001000000111001101100101011000110111010001100101011101010111001001110011001000000110010001100101001000000110110011100010100000001001100101101001011011100110010001110101011100110111010001110010011010010110010100100000011001000111010100100000011000110110111101101101011011010110010101110010011000110110010100101100001000000110010001100101011100110010000001110100011001010110001101101000011011100110111101101100011011110110011101101001011001010111001100100000011100000110111101110101011100100010000001101100011000010010000001110011011000010110111001110100110000111010100100101100001000000110010001100101011100110010000001110011011011010110000101110010011101000010000001100111011100100110100101100100011100110010111001000011010100100100100101010011011101000100000101001100001000000010100001000011011001010110111001110100011100100110010100100000011001000110010100100000010100100110010101100011011010000110010101110010011000110110100001100101001000000110010101101110001000000100100101101110011001100110111101110010011011010110000101110100011010010111000101110101011001010010110000100000010100110110100101100111011011100110000101101100001000000110010101110100001000000100000101110101011101000110111101101101011000010111010001101001011100010111010101100101001000000110010001100101001000000100110001101001011011000110110001100101001010010010000001100101011100110111010000100000011101010110111001100101001000000111010101101110011010010111010011000011101010010010000001101101011010010111100001110100011001010010000001100100011001010010000001110010011001010110001101101000011001010111001001100011011010000110010100100000001010000101010101001101010100100010000000111001001100010011100000111001001010010010000001110010110000111010100101110011011101010110110001110100011000010110111001110100001000000110010001100101001000000110110001100001001000000110011001110101011100110110100101101111011011100010000001100100011101010010000001001100010000010100011101001001010100110010000000101000010011000110000101100010011011110111001001100001011101000110111101101001011100100110010100100000011001001110001010000000100110010100000101110101011101000110111101101101011000010111010001101001011100010111010101100101001011000010000001000111110000111010100101101110011010010110010100100000010010010110111001100110011011110111001001101101011000010111010001101001011100010111010101100101001000000110010101110100001000000101001101101001011001110110111001100001011011000010000000101101001000000101010101001101010100100010000000111000001100100011000100111001001010010010000001100101011101000010000001100100011101010010000001001100010010010100011001001100001000000010100001001100011000010110001001101111011100100110000101110100011011110110100101110010011001010010000001100100111000101000000010011001010010010110111001100110011011110111001001101101011000010111010001101001011100010111010101100101001000000100011001101111011011100110010001100001011011010110010101101110011101000110000101101100011001010010000001100100011001010010000001001100011010010110110001101100011001010010000000101101001000000101010101001101010100100010000000111000001100000011001000110010001010010010000001110000011011110111010101110010001000000110011011000011101010010110010011000011101010010111001001100101011100100010000001101100011001010111010101110010011100110010000001100011011011110110110101110000110000111010100101110100011001010110111001100011011001010111001100100000011000110110111101101101011100000110110011000011101010010110110101100101011011100111010001100001011010010111001001100101011100110010000001100101011011100010000001110011011000110110100101100101011011100110001101100101011100110010000001100100011001010010000001101100111000101000000010011001011010010110111001100110011011110111001001101101011000010111010001101001011011110110111000101110001000000100001101010010010010010101001101110100010000010100110000100000011001010111001101110100001000000110111011000011101010010010000001101100011001010010000000110001011001010111001000100000011010100110000101101110011101100110100101100101011100100010000000110010001100000011000100110101001000000111001101101111011101010111001100100000011011000110000100100000011101000111010101110100011001010110110001101100011001010010000001100100011101010010000001000011010011100101001001010011001011000010000001100100011001010010000001101100111000101000000010011001010101010110111001101001011101100110010101110010011100110110100101110100110000111010100100100000010011000110100101101100011011000110010100100000001100010010000001100101011101000010000001100100011001010010000001101100111000101000000010011001010001010110001101101111011011000110010100100000010000110110010101101110011101000111001001100001011011000110010100100000011001000110010100100000010011000110100101101100011011000110010100100000011001010110111000100000011100000110000101110010011101000110010101101110011000010111001001101001011000010111010000100000011000010111011001100101011000110010000001101100111000101000000010011001010101010110111001101001011101100110010101110010011100110110100101110100110000111010100100100000010011000110100101101100011011000110010100100000001100110010110000100000010010010110111001110010011010010110000100100000011001010111010000100000011011001110001010000000100110010100100101101110011100110111010001101001011101000111010101110100001000000100110101101001011011100110010101110011001000000101010001100101011011000110010101100011011011110110110100101110001000000100001101010010010010010101001101110100010000010100110000100000011001010111001101110100001000000110110101100101011011010110001001110010011001010010000001100100011001010010000001101100111000101000000010011001011010010110111001110011011101000110100101110100011101010111010000100000011001000110010100100000011100100110010101100011011010000110010101110010011000110110100001100101011100110010000001101001011011100111010001100101011100100110010001101001011100110110001101101001011100000110110001101001011011100110000101101001011100100110010101110011001000000100100101010010010000110100100101000011010000010010000011100010100000001001001100100000010101010101001101010010001000000100001101001110010100100101001100100000001100110011001100111000001100000010000000101000011101110111011101110111001011100110100101110010011000110110100101100011011000010010111001110101011011100110100101110110001011010110110001101001011011000110110001100101001100010010111001100110011100100010100100101110001000000100110011100010100000001001100101110101011011100110100101110100110000111010100100100000011001010111001101110100001000000110001101101111011011010111000001101111011100111100001110101001011001010010000001100100011001010010000001110000011100101100001110101000011100110010000001100100011001010010000000110100001100110011000000100000011011010110010101101101011000100111001001100101011100110010000000101000001100100011001000110010001000000111000001100101011100100110110101100001011011100110010101101110011101000111001100100000011001010111010000100000011100000110110001110101011100110010000001100100011001010010000000110010001100000011000000100000011011100110111101101110001000000111000001100101011100100110110101100001011011100110010101101110011101000111001100101001001000000110010001101111011011100111010000100000001100100011001000100000011100000110010101110010011011010110000101101110011001010110111001110100011100110010000001000011010011100101001001010011001000000110010101110100001000000011001000110111001000000111000001100101011100100110110101100001011011100110010101101110011101000111001100100000010010010110111001110010011010010110000100101110001000000100110001100101011100110010000001100001011000110111010001101001011101100110100101110100110000111010100101110011001000000110010001100101001000000111001001100101011000110110100001100101011100100110001101101000011001010010000001100100011001010010000001000011010100100100100101010011011101000100000101001100001000000110001101101111011011100110001101100101011100100110111001100101011011100111010000100000011011000110010101110011001000000111010001101000110000111010100101101101011000010111010001101001011100010111010101100101011100110010000001101100011010011100001110101001011001010111001100100000011000010111010101111000001000000110011101110010011000010110111001100100011100110010000001100101011011100110101001100101011101010111100000100000011100110110001101101001011001010110111001110100011010010110011001101001011100010111010101100101011100110010000001100101011101000010000001110011011011110110001101101001110000111010100101110100011000010111010101111000001000000110010001110101001000000110110101101111011011010110010101101110011101000010000001110100011001010110110001110011001000000111000101110101011001010010000000111010001000000100001001101001011001110100010001100001011101000110000100101100001000000110110001101111011001110110100101100011011010010110010101101100001011000010000001101001011011010110000101100111011001010010000001100101011101000010000001110011011001010111001100100000011101010111001101100001011001110110010101110011001011000010000001101001011011100111010001100101011100100110000101100011011101000110100101101111011011100111001100100000011010000110111101101101011011010110010100101101011011010110000101100011011010000110100101101110011001010010110000100000011100100110111101100010011011110111010001101001011100010111010101100101001011000010000001100011011011110110110101101101011000010110111001100100011001010010000001100101011101000010000001110011011101010111000001100101011100100111011001101001011100110110100101101111011011100010000001100100011001010010000001100111011100100110000101101110011001000111001100100000011100110111100101110011011101001100001110101000011011010110010101110011001011000010000001110011011110010111001101110100110000111010100001101101011001010111001100100000011001010110110101100010011000010111001001110001011101011100001110101001011100110010000001101001011011100111010001100101011011000110110001101001011001110110010101101110011101000111001100101100001000000110001001101001011011110010110101101001011011100110011001101111011100100110110101100001011101000110100101110001011101010110010111100010100000001010011000100000011000010111011001100101011000110010000001100100011001010111001100100000011000010111000001110000011011000110100101100011011000010111010001101001011011110110111001110011001000000110111001101111011101000110000101101101011011010110010101101110011101000010000001100100011000010110111001110011001000000110110001100101011100110010000001110011011001010110001101110100011001010111010101110010011100110010000001100100011001010010000001101100111000101000000010011001011010010110111001100100011101010111001101110100011100100110100101100101001000000110010001110101001000000110001101101111011011010110110101100101011100100110001101100101001011000010000001100100011001010111001100100000011101000110010101100011011010000110111001101111011011000110111101100111011010010110010101110011001000000111000001101111011101010111001000100000011011000110000100100000011100110110000101101110011101001100001110101001001011000010000001100100011001010111001100100000011100110110110101100001011100100111010000100000011001110111001001101001011001000111001100101110
'CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.'
# Convert the key to bits, then to an integer
#key_unicode = unicode(key, "utf-8")
#bits_key = '{:b}'.format(int(key_unicode.encode('utf-8').encode('hex'), 16))
key_unicode = str(key)
#bits_key = ''.join('{:08b}'.format(b) for b in key_unicode.encode('utf8'))
#key_int = sum(map(lambda x: x[1]*(2**x[0]), enumerate(map(int, str(bits_key))[::-1])))
key_int = hash(key) #sum(map(lambda x: x[1]*(2**x[0]), enumerate(int(bits_key))[::-1]))
# Compute the message size
nb_bits = len(bits)
print('message size:' , nb_bits)
message size: 62687
# Get the blue channel
blue_channel = im_array[:,:,2]
w,h = blue_channel.shape
blue_channel_vec = np.reshape(blue_channel,(w*h))
# Print some pixels values
print(blue_channel[:10,:10])
plt.figure(1,figsize=(10,10))
plt.imshow(blue_channel,cmap='Blues')
[[113 114 113 118 128 135 139 139 139 139] [112 113 113 116 125 131 136 138 139 139] [111 112 111 111 113 118 122 132 136 136] [112 110 111 109 111 110 116 126 131 132] [111 109 110 107 109 109 115 119 122 125] [108 110 110 110 111 111 115 123 130 133] [109 110 109 110 112 118 124 130 135 138] [109 110 110 111 117 126 134 136 139 141] [112 114 117 120 127 133 137 139 139 139] [115 121 126 132 137 137 138 140 141 139]]
<matplotlib.image.AxesImage at 0x15d447fbb50>
# Perform a pseudo random permutation
np.random.seed(np.mod(key_int,4294967295))
index_perm = np.random.permutation(w*h)
print(index_perm[:10])
[219045 250766 205770 140183 112858 154956 108881 18349 180527 177506]
blue_perm = blue_channel_vec[index_perm]
print(blue_perm[:100])
[ 82 125 76 27 160 207 173 152 65 72 98 61 92 83 74 135 55 148 58 169 181 75 71 119 100 135 148 204 98 154 98 85 100 71 170 103 172 150 92 206 136 116 71 187 126 47 91 142 151 82 100 77 184 71 102 70 23 169 175 67 1 151 149 73 76 145 122 155 57 65 77 103 173 85 62 52 183 152 164 155 176 131 62 73 134 185 120 146 106 158 97 139 220 73 170 132 41 99 56 155]
# Get the LSBs
lsb = blue_perm&1
print(lsb[:100])
[0 1 0 1 0 1 1 0 1 0 0 1 0 1 0 1 1 0 0 1 1 1 1 1 0 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 1 1 0 1 1 0 1 0 0 1 0 1 0 0 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 1 1 0 1 0 0 1 1 0 1]
# Write the size on the first 32 bits
lsb[:32]= list(np.binary_repr(nb_bits, width=32))
# Write the message after
lsb[32:32+nb_bits] = list(bits)
# LSB substitution
blue_perm_stego = (blue_perm & ~1) | lsb
print(blue_perm_stego[:100])
print(blue_perm_stego[:100]-blue_perm[:100])
[ 82 124 76 26 160 206 172 152 64 72 98 60 92 82 74 134 55 149 59 169 180 75 70 118 101 135 148 205 99 155 99 85 101 70 170 102 172 151 93 206 137 116 71 186 126 47 90 142 151 82 100 77 184 70 103 70 23 168 175 66 0 151 149 72 77 145 123 154 57 64 76 102 173 84 62 52 182 152 165 154 177 130 62 73 135 184 120 146 106 159 96 138 220 72 170 132 40 99 56 155] [ 0 -1 0 -1 0 -1 -1 0 -1 0 0 -1 0 -1 0 -1 0 1 1 0 -1 0 -1 -1 1 0 0 1 1 1 1 0 1 -1 0 -1 0 1 1 0 1 0 0 -1 0 0 -1 0 0 0 0 0 0 -1 1 0 0 -1 0 -1 -1 0 0 -1 1 0 1 -1 0 -1 -1 -1 0 -1 0 0 -1 0 1 -1 1 -1 0 0 1 -1 0 0 0 1 -1 -1 0 -1 0 0 -1 0 0 0]
blue_stego = np.zeros((w*h))
# Inverse permutation
blue_stego[index_perm] = blue_perm_stego
blue_stego = np.reshape(blue_stego,(w,h))
blue_stego = blue_stego.astype(dtype=np.uint8)
im_stego[:,:,2] = blue_stego
# Save and show the stego picture
im_stego_png = Image.fromarray(im_stego)
im_stego_png.save(stego_path)
plt.figure(2,figsize=(10,10))
plt.imshow(im_stego)
print('embedding rate:\n',float(nb_bits+32)/(3*h*w), 'bpp\n')
embedding rate: 0.07975133260091145 bpp
# Show the difference
plt.figure(1,figsize=(10,10))
plt.imshow(blue_stego-blue_channel,cmap='Greys')
<matplotlib.image.AxesImage at 0x15d448b4670>
# Decode
# Open the image
pil_image = Image.open(stego_path)
im_array = np.asarray(pil_image)
# Use a key
key = 'azerty'
# Convert the key to bits, then to an integer
#key_unicode = unicode(key, "utf-8")
#bits_key = '{:b}'.format(int(key_unicode.encode('utf-8').encode('hex'), 16))
#key_int = sum(map(lambda x: x[1]*(2**x[0]), enumerate(map(int, str(bits_key))[::-1])))
key_int = hash(key)
# Get the blue channel
blue_channel_test = im_array[:,:,2]
w,h = blue_channel_test.shape
blue_channel_vec = np.reshape(blue_channel_test,(w*h))
# Perform a pseudo random permutation
np.random.seed(np.mod(key_int,4294967295))
index_perm = np.random.permutation(w*h)
blue_perm = blue_channel_vec[index_perm]
#Get the message size from the first 32 bits
nb_bits = int(str(blue_perm[:32]&1).replace('[','').replace(']','').replace(' ',''),2)
print(nb_bits)
62687
# If message size larger than image size, extract at maximum capacity
if nb_bits>h*w : nb_bits = h*w-32
# Get the pixels encoding the message
blue_perm_new = blue_perm[32:32+nb_bits]
# Get the LSBs
lsb = blue_perm_new&1
print(lsb)
# Convert the lsb to string
bit_string2 = lsb.tostring()
bit_str = '0b'
print(len(lsb))
for i in range(len(lsb)):
#print(lsb[i])
if lsb[i]==0:
bit_str=bit_str+'0'
else:
bit_str=bit_str+'1'
#print(bit_str)
#print(bytes(bit_string))
#print(format(bit_string, 'b'))
# Do some string manipulation
#new_string = str(bit_string).replace('\x01','1')
#new_string = new_string.replace('\x00','0')
#print(new_string)
# Do the convertion
#chars = ('%x' % int(new_string[:nb_bits], 2)).decode('hex').decode('utf-8',errors='ignore')
#print(bit_str)
n = int(bit_str, 2)
#print(n)
#print(bit_string[:10])
print(bit_str[:10])
n.to_bytes((n.bit_length() + 7) // 8, 'big').decode()
[1 0 0 ... 1 1 0] 62687
C:\Users\NICOLAS\AppData\Local\Temp\ipykernel_16552\2137236598.py:12: DeprecationWarning: tostring() is deprecated. Use tobytes() instead. bit_string2 = lsb.tostring()
0b10000110
'CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.'
# Get the image
pil_image = Image.open('./stego.png')
#fficher la taille de l image
print(pil_image.size[0]*pil_image.size[1])
im_array = np.asarray(pil_image)
im_stego = np.copy(im_array)
Im = im_array[:,:,2]
# Get pairs of neighboring pixels
R = Im[:,:-1]
S = Im[:,1:]
width, height = S.shape
size = float(width * height)
im_stego = S.astype(float)
im_Diff = S.astype(float) - R.astype(float)
Zp = np.sum(im_Diff==0)
print("Zp : ",Zp)
#(s-r)=-1 && s pair ou (s-r)=1 && s impair
Wp = np.sum(((S%2==1) & (im_Diff==1)) + ((S%2==0) & (im_Diff==-1)))
print("Wp : ",Wp)
#s pair et r<s ou s impair et r>s
Xp = np.sum(((S%2==0) & (im_Diff>0)) + ((S%2==1) & (im_Diff<0)))
print("Xp : ", Xp)
#s pair et (s-r)<-1 ou s impair et (s-r)>1
Vp = np.sum(((S%2==0) & (im_Diff<-1)) + ((S%2==1) & (im_Diff>1)))
print("Vp : ",Vp)
Pp = Xp+Vp+Zp+Wp
print('P: ',Pp,' doit normalement approcher 511*512 = 261632')
a = float(2*(Wp+Zp))
b = float(2*(2*Xp-Pp))
c = float(Vp+Wp-Xp)
print('a= ',a,'b= ',b,'c= ',c)
delta = b*b-4*a*c
print('delta= ',delta)
# calcul de l'estimation de p
pEst=(-b-np.sqrt(delta))/(2*a)
print('estimated message size (bits):' , pEst*2*512**2)
print('real message size (bits):' , nb_bits)
262144 Zp : 33194 Wp : 30777 Xp : 110277 Vp : 87384 P: 261632 doit normalement approcher 511*512 = 261632 a= 127942.0 b= -82156.0 c= 7884.0 delta= 2714829424.0 estimated message size (bits): 61574.34562034313 real message size (bits): 62687
On obtient une valeur relativement proche, on a 1.7% d'erreur
from tqdm import tqdm
#en faisant varier la clé, donner l ecart type et la moyenne de la taille du message estimé
size_list = []
for k in tqdm(range(1000)):
#generate a key with 6 characters
key = ''.join(random.choice('azertyuiopqsdfghjklmwxcvbn') for _ in range(6))
message = 'CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.'
message_unicode = str(message)
pil_image = Image.open(image_path)
im_array = np.asarray(pil_image)
im_stego = np.copy(im_array)
bits = bin(int.from_bytes(message.encode(), 'big'))
bits = bits[2:]
bit_string = bin(int.from_bytes(message.encode(), 'big'))
n = int('0b'+bit_string[2:], 2)
n.to_bytes((n.bit_length() + 7) // 8, 'big').decode()
key_unicode = str(key)
key_int = hash(key)
nb_bits = len(bits)
blue_channel = im_array[:,:,2]
w,h = blue_channel.shape
blue_channel_vec = np.reshape(blue_channel,(w*h))
np.random.seed(np.mod(key_int,4294967295))
index_perm = np.random.permutation(w*h)
blue_perm = blue_channel_vec[index_perm]
lsb = blue_perm&1
lsb[:32]= list(np.binary_repr(nb_bits, width=32))
lsb[32:32+nb_bits] = list(bits)
blue_perm_stego = (blue_perm & ~1) | lsb
blue_stego = np.zeros((w*h))
blue_stego[index_perm] = blue_perm_stego
blue_stego = np.reshape(blue_stego,(w,h))
blue_stego = blue_stego.astype(dtype=np.uint8)
im_stego[:,:,2] = blue_stego
im_stego_png = Image.fromarray(im_stego)
im_stego_png.save(stego_path)
pil_image = Image.open('./stego.png')
im_array = np.asarray(pil_image)
im_stego = np.copy(im_array)
Im = im_array[:,:,2]
# Get pairs of neighboring pixels
R = Im[:,:-1]
S = Im[:,1:]
width, height = S.shape
size = float(width * height)
im_stego = S.astype(float)
im_Diff = S.astype(float) - R.astype(float)
Zp = np.sum(im_Diff==0)
Wp = np.sum(((S%2==1) & (im_Diff==1)) + ((S%2==0) & (im_Diff==-1)))
Xp = np.sum(((S%2==0) & (im_Diff>0)) + ((S%2==1) & (im_Diff<0)))
Vp = np.sum(((S%2==0) & (im_Diff<-1)) + ((S%2==1) & (im_Diff>1)))
Pp = Xp+Vp+Zp+Wp
a = float(2*(Wp+Zp))
b = float(2*(2*Xp-Pp))
c = float(Vp+Wp-Xp)
delta = b*b-4*a*c
# calcul de l'estimation de p
pEst=(-b-np.sqrt(delta))/(2*a)
size_list.append(pEst*2*512**2)
print('moyenne: ',np.mean(size_list))
print('ecart type: ',np.std(size_list))
100%|██████████| 1000/1000 [02:58<00:00, 5.62it/s]
moyenne: 62282.10268972342 ecart type: 2448.8723953057774
Nous trouvons une moyenne de 62282 pour 62687 recherché et un écrat type de 2448, soit 3.9% avec 1000 essais. Logiquement, en augmentant le nombre d'essais, on devrait se rapprocher de la valeur recherchée et l'écart type devrait diminuer.